package com.fowo.api.model.product;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 产品 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class ProductImportPo {

  /** 款名 */
  @ExcelProperty("款名")
  @Size(max = 500, message = "款名长度不能超过500")
  private String spuName;

  /** SPU */
  @ExcelProperty("SPU")
  @Size(max = 50, message = "SPU长度不能超过50")
  private String spu;

  /** 品名 */
  @ExcelProperty("*品名")
  @NotBlank(message = "品名不能为空")
  @Size(max = 500, message = "品名长度不能超过500")
  private String name;

  /** SKU */
  @ExcelProperty("*SKU")
  @NotBlank(message = "SKU不能为空")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 开启状态 */
  @ExcelProperty("开启状态")
  @BooleanString(message = "开启状态格式不正确，请使用“是”，“否”")
  private String isOpen;

  /** 型号 */
  @ExcelProperty("型号")
  @Size(max = 50, message = "型号长度不能超过50")
  private String model;

  /** 单位 */
  @ExcelProperty("单位")
  @Size(max = 50, message = "单位长度不能超过50")
  private String unit;

  /** 分类 */
  @ExcelProperty("分类")
  @Size(max = 50, message = "分类长度不能超过50")
  private String classifyName;

  @ExcelIgnore
  @Schema(title = "分类")
  private String classify;

  /** 品牌 */
  @ExcelProperty("品牌")
  @Size(max = 50, message = "品牌长度不能超过50")
  private String brandName;

  @ExcelIgnore
  @Schema(title = "品牌")
  private String brand;

  /** 开发人 */
  @ExcelProperty("开发人")
  @Size(max = 50, message = "开发人长度不能超过50")
  private String developerName;

  @ExcelIgnore
  @Schema(title = "开发人")
  private String developer;

  /** 产品负责人 */
  @ExcelProperty("产品负责人")
  @Size(max = 50, message = "产品负责人长度不能超过50")
  private String principalName;

  @ExcelIgnore
  @Schema(title = "产品负责人")
  private String principal;

  /** 采购员 */
  @ExcelProperty("采购员")
  @Size(max = 50, message = "采购员长度不能超过50")
  private String buyerName;

  @ExcelIgnore
  @Schema(title = "采购员")
  private String buyer;

  /** 采购交期 */
  @ExcelProperty("采购交期")
  @IntegerString(message = "采购交期数值格式不正确", label = "采购交期")
  private String purchasingDeliveryTime;

  /** 采购成本 */
  @ExcelProperty("采购成本")
  @DecimalString(
    message = "采购成本小数格式不正确",
    label = "采购成本",
    prefix = "￥"
  )
  private String procurementCost;

  /** 单箱数量 */
  @ExcelProperty("单箱数量")
  @IntegerString(message = "单箱数量数值格式不正确", label = "单箱数量")
  private String packingNum;

  /** 外箱长度 */
  @ExcelProperty("外箱长度")
  @DecimalString(message = "外箱长度小数格式不正确", label = "外箱长度")
  private String boxLength;

  /** 外箱宽度 */
  @ExcelProperty("外箱宽度")
  @DecimalString(message = "外箱宽度小数格式不正确", label = "外箱宽度")
  private String boxWidth;

  /** 外箱高度 */
  @ExcelProperty("外箱高度")
  @DecimalString(message = "外箱高度小数格式不正确", label = "外箱高度")
  private String boxHeight;

  /** 单箱重量 */
  @ExcelProperty("单箱重量")
  @DecimalString(message = "单箱重量小数格式不正确", label = "单箱重量")
  private String packingWeight;

  /** 包装长度 */
  @ExcelProperty("包装长度")
  @DecimalString(message = "包装长度小数格式不正确", label = "包装长度")
  private String packageLength;

  /** 包装宽度 */
  @ExcelProperty("包装宽度")
  @DecimalString(message = "包装宽度小数格式不正确", label = "包装宽度")
  private String packageWidth;

  /** 包装高度 */
  @ExcelProperty("包装高度")
  @DecimalString(message = "包装高度小数格式不正确", label = "包装高度")
  private String packageHeight;

  /** 单品毛重 */
  @ExcelProperty("单品毛重")
  @DecimalString(message = "单品毛重小数格式不正确", label = "单品毛重")
  private String productGross;

  /** 关联辅料数 */
  @ExcelProperty("关联辅料数")
  private String accessoriesNum;

  /** 状态 */
  @ExcelProperty("状态")
  private String salesStatus;

  /** 1688配对状态 */
  @ExcelProperty("1688配对状态")
  @BooleanString(message = "1688配对状态格式不正确，请使用“是”，“否”")
  private String isMatchedAlibaba;

  /** listing配对状态 */
  @ExcelProperty("listing配对状态")
  @BooleanString(message = "listing配对状态格式不正确，请使用“是”，“否”")
  private String isMatchedListing;

  /** 产品类型 */
  @ExcelProperty("*产品类型")
  @NotBlank(message = "产品类型不能为空")
  private String type;

  /** 类别名 */
  @ExcelProperty("类别名")
  @Size(max = 100, message = "类别名长度不能超过100")
  private String productType;

  /** 分组 */
  @ExcelProperty("分组")
  @Size(max = 50, message = "分组长度不能超过50")
  private String groupName;

  @ExcelIgnore
  @Schema(title = "分组")
  private String group;

  /** 产品标签 */
  @ExcelProperty("产品标签")
  @Size(max = 50, message = "产品标签长度不能超过50")
  private String label;

  /** 生命周期标签 */
  @ExcelProperty("生命周期标签")
  private String lifeTag;

  /** 产品条码 */
  @ExcelProperty("产品条码")
  @Size(max = 50, message = "产品条码长度不能超过50")
  private String info1;

  /** 信息二 */
  @ExcelProperty("信息二")
  @Size(max = 50, message = "信息二长度不能超过50")
  private String info2;

  /** 电镀颜色 */
  @ExcelProperty("电镀颜色")
  @Size(max = 50, message = "电镀颜色长度不能超过50")
  private String epColor;

  /** 产品描述 */
  @ExcelProperty("产品描述")
  private String productDescription;

  /** 采购备注 */
  @ExcelProperty("采购备注")
  @Size(max = 500, message = "采购备注长度不能超过500")
  private String remarks;

  /** 公制英制 */
  @ExcelProperty("公制英制")
  private String metricOrBritish;

  /** 产品长度 */
  @ExcelProperty("产品长度")
  @DecimalString(message = "产品长度小数格式不正确", label = "产品长度")
  private String productLength;

  /** 产品宽度 */
  @ExcelProperty("产品宽度")
  @DecimalString(message = "产品宽度小数格式不正确", label = "产品宽度")
  private String productWidth;

  /** 产品高度 */
  @ExcelProperty("产品高度")
  @DecimalString(message = "产品高度小数格式不正确", label = "产品高度")
  private String productHeight;

  /** 产品净重 */
  @ExcelProperty("产品净重")
  @DecimalString(message = "产品净重小数格式不正确", label = "产品净重")
  private String productNet;

  /** 产品材质 */
  @ExcelProperty("产品材质")
  @Size(max = 50, message = "产品材质长度不能超过50")
  private String material;

  /** 物流计价方式 */
  @ExcelProperty("物流计价方式")
  private String logisticsPriceType;

  /** 采购计价方式 */
  @ExcelProperty("采购计价方式")
  private String purchasePriceType;

  /** 主材价格 */
  @ExcelProperty("主材价格")
  private String priceType;

  /** 申报单价 */
  @ExcelProperty("申报单价")
  @DecimalString(message = "申报单价小数格式不正确", label = "申报单价")
  private String customsCharges;

  /** 申报货币 */
  @ExcelProperty("申报货币")
  private String customsCurrency;

  /** 中文报关名 */
  @ExcelProperty("中文报关名")
  @Size(max = 50, message = "中文报关名长度不能超过50")
  private String chineseName;

  /** 英文报关名 */
  @ExcelProperty("英文报关名")
  @Size(max = 50, message = "英文报关名长度不能超过50")
  private String englishName;

  /** 报关单位 */
  @ExcelProperty("报关单位")
  @Size(max = 50, message = "报关单位长度不能超过50")
  private String exporter;

  /** 报关规格型号 */
  @ExcelProperty("报关规格型号")
  @Size(max = 50, message = "报关规格型号长度不能超过50")
  private String exportModel;

  /** 原产国 */
  @ExcelProperty("原产国")
  @Size(max = 50, message = "原产国长度不能超过50")
  private String originalPlace;

  /** 境内货源地 */
  @ExcelProperty("境内货源地")
  @Size(max = 50, message = "境内货源地长度不能超过50")
  private String chinaSource;

  /** 征免 */
  @ExcelProperty("征免")
  @Size(max = 50, message = "征免长度不能超过50")
  private String exemption;

  /** 特殊属性 */
  @ExcelProperty("特殊属性")
  private String specialProperties;

  /** 材质 */
  @ExcelProperty("材质")
  @Size(max = 50, message = "材质长度不能超过50")
  private String customsMaterial;

  /** 用途 */
  @ExcelProperty("用途")
  @Size(max = 50, message = "用途长度不能超过50")
  private String customsUse;

  /** 内部编码 */
  @ExcelProperty("内部编码")
  @Size(max = 50, message = "内部编码长度不能超过50")
  private String customsCode;

  /** 出口享惠情况 */
  @ExcelProperty("出口享惠情况")
  private String customsDiscounts;

  /** 品牌类型 */
  @ExcelProperty("品牌类型")
  private String customsBrand;

  /** 产品型号 */
  @ExcelProperty("产品型号")
  @Size(max = 50, message = "产品型号长度不能超过50")
  private String customsModel;

  /** 配货备注 */
  @ExcelProperty("配货备注")
  @Size(max = 50, message = "配货备注长度不能超过50")
  private String customsRemark;

  /** 织造方式 */
  @ExcelProperty("织造方式")
  private String customsWeave;

  /** 质检方式 */
  @ExcelProperty("质检方式")
  private String checkType;

  /** 是否开启批次管理 */
  @ExcelProperty("是否开启批次管理")
  @BooleanString(message = "是否开启批次管理格式不正确，请使用“是”，“否”")
  private String isBatch;

  /** 默认仓库 */
  @ExcelProperty("默认仓库")
  @Size(max = 50, message = "默认仓库长度不能超过50")
  private String defaultWarehouseName;

  @ExcelIgnore
  @Schema(title = "默认仓库")
  private String defaultWarehouse;

  /** 上架策略 */
  @ExcelProperty("上架策略")
  private String putaway;

  /** 盘点周期 */
  @ExcelProperty("盘点周期")
  @IntegerString(
    message = "盘点周期数值格式不正确",
    label = "盘点周期",
    min = 0
  )
  private String stocktaking;

  /** 品牌名称 */
  @ExcelProperty("品牌名称")
  @Size(max = 50, message = "品牌名称长度不能超过50")
  private String tradeName;

  /** 采购运输成本 */
  @ExcelProperty("采购运输成本")
  @DecimalString(message = "采购运输成本小数格式不正确", label = "采购运输成本")
  private String transportCost;

  /** 是否为组合商品 */
  @ExcelProperty("是否为组合商品")
  @BooleanString(message = "是否为组合商品格式不正确，请使用“是”，“否”")
  private String isCombo;

  /** 供应商报价信息 */
  @ExcelProperty("供应商报价信息")
  @Size(max = 2000, message = "供应商报价信息长度不能超过2000")
  private String supplierQuote;

  /** 零星产品id */
  @ExcelProperty("零星产品id")
  @LongString(
    message = "零星产品id数值格式不正确",
    label = "零星产品id",
    min = 0L
  )
  private String lxProductId;

  /** 属性 */
  @ExcelProperty("属性")
  @Size(max = 1024, message = "属性长度不能超过1024")
  private String attribute;
}
